#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
using namespace std;
const int N=1e5+50;
typedef long long ll;
int n;
ll a[N],pre[N];
int LL[N],RR[N];
int main(void){
    while(~scanf("%d",&n)){
        memset(a,0,sizeof(a));
        memset(pre,0,sizeof(pre));
        for(int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            pre[i]=pre[i-1]+a[i];
        }
        stack<int> s;
        for(int i=1;i<=n;i++){
            while(s.size()>0 && a[i]<=a[s.top()]){
                s.pop();
            }
            if(s.size()==0){
                LL[i]=1;
            }
            else{
                LL[i]=s.top()+1;
            }
            s.push(i);
        }
        while(!s.empty()){
            s.pop();
        }
        for(int i=n;i>=1;i--){
            while(s.size()>0 && a[i]<=a[s.top()]){
                s.pop();
            }
            if(s.size()==0){
                RR[i]=n;
            }
            else{
                RR[i]=s.top()-1;
            }
            s.push(i);
        }
        // for(int i=1;i<=n;i++){
        //     printf("%d ",LL[i]);
        // }
        // printf("\n");
        // for(int i=1;i<=n;i++){
        //     printf("%d ",RR[i]);
        // }
        // printf("\n");
        ll ans=-1;
        int l=0,r=0;
        for(int i=1;i<=n;i++){
            if(a[i]*(pre[RR[i]]-pre[LL[i]-1])>ans){
                ans=a[i]*(pre[RR[i]]-pre[LL[i]-1]);
                l=LL[i];
                r=RR[i];
            }
        }
        printf("%lld\n",ans);
        printf("%d %d\n",l,r);
    }
    return 0;
}